<?php

/**
 * Фильтр приложения, запущенного по cron’у.
 *
 */
class Kernel_Filter_Cron extends Kernel_Filter 
{

    /**
     * Запускает фильтр.
     *
     */
    public function process() 
    {
        $response = Application::getResponse();
        foreach ($this->_getModules() as $name) {
            $response->write($name . ': ');
            $this->_forward(Kernel_Module::factory($name));
            $response->write("\n");
        }
    }

    /**
     * Возвращает модули системы.
     *
     * @return  array
     */
    private function _getModules() 
    {
        $modules = array();
        foreach (array(KERNEL_REPOSITORY, PROJECT_REPOSITORY) as $dir) {
            foreach (glob($dir . DIRECTORY_SEPARATOR . '*', GLOB_ONLYDIR) as $filename) {
                $modules[] = pathinfo($filename, PATHINFO_FILENAME);
            }
        }
        return array_unique($modules);
    }
    
}
